/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
/**
 * NuGat-API named Chameleon developed by Simon De Baets to Verimag.
 *
 */
package chameleon.model.NuGatStructure.bdd;

import chameleon.gameSolver.NuGat.NuGatInterface;
import chameleon.model.NuGatStructure.NuGatStructure;
import com.sun.jna.Pointer;

/**
 * This class is a wrapper to C struct BddTrans.c
 *
 * @author simon
 */
public class BddTrans extends NuGatStructure {
    
    public BddTrans (Pointer bddTrans, NuGatInterface nugat){
        super (bddTrans, nugat);
    }
    
    /**
     * 
     * @param dd_manager
     * @param clusters_bdd
     * @param state_vars_cube
     * @param input_vars_cube
     * @param next_state_vars_cube
     * @param trans_type
     * @param ClusterOptions_ptr
     * @param nugat 
     */
    
    public BddTrans (DdManager dd_manager,
                             ClusterList clusters_bdd,
                             Bdd state_vars_cube,
                             Bdd input_vars_cube,
                             Bdd next_state_vars_cube,
                             Pointer trans_type,
                             ClusterOptions ClusterOptions,
                             NuGatInterface nugat){
        super (nugat.BddTrans_create(dd_manager.ptr(),
                clusters_bdd.ptr(),
                state_vars_cube.ptr(),
                input_vars_cube.ptr(),
                next_state_vars_cube.ptr(),
                trans_type,
                ClusterOptions.ptr())
                ,nugat);
    }
    
    public void applySynchronousProduct(BddTrans other,
                                        Bdd state_vars_cube,
                                        Bdd input_vars_cube,
                                        Bdd next_state_vars_cube){
        nugat_.BddTrans_apply_synchronous_product(this.ptr(),
                other.ptr(),
                state_vars_cube.ptr(),
                input_vars_cube.ptr(),
                next_state_vars_cube.ptr());
    }
    
}
